package com.intelligent.mapper;

import com.intelligent.pojo.Process;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
* @author lenovo
* @description 针对表【process(工序信息表)】的数据库操作Mapper
* @createDate 2025-08-29 10:43:54
* @Entity com.intelligent.pojo.Process
*/
public interface ProcessMapper extends BaseMapper<Process> {

    /**
     * 分页查询工序信息（包含单位和用户信息）
     * @param page 分页参数
     * @param processCode 工序编号（可选）
     * @param processName 工序名称（可选）
     * @param processType 工序类型（可选）
     * @param status 状态（可选）
     * @return 分页结果
     */
    IPage<Map<String, Object>> selectProcessPage(Page<Map<String, Object>> page,
                                                @Param("processCode") String processCode,
                                                @Param("processName") String processName,
                                                @Param("processType") Integer processType,
                                                @Param("status") Integer status);

    /**
     * 插入工序信息
     * @param process 工序信息
     * @return 影响行数
     */
    int insertProcess(Process process);

    /**
     * 获取最大的BOM编号
     *
     * @return 最大BOM编号，如果没有数据则返回null
     */
    String getMaxProcessCode();

    /**
     * 修改工序信息
     * @param process 工序信息
     * @return 影响行数
     */
    int updateProcess(Process process);

    /**
     * 删除工序信息
     * @param processId 工序ID
     * @return 影响行数
     */
    int deleteProcess(@Param("processId") Long processId);

    /**
     * 根据ID查询工序信息（包含单位和用户信息）
     * @param processId 工序ID
     * @return 工序详细信息
     */
    Map<String, Object> selectProcessById(@Param("processId") Long processId);

}
